#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
using namespace std;

//#define N 1000010
//int prime[N], cut;
//bool st[N];
//
//void get_primes(int n)
//{
//	for (int i = 2; i <= n; i++)
//	{
//		if (!st[i]) prime[cut++] = i;
//		for (int j = 0; prime[j] <= n / i; j++)
//		{
//			st[prime[j] * i] = true;
//			if (i % prime[j] == 0) break;
//		}
//	}
//}
//
//int n, q;
//
//int main()
//{
//	scanf("%d%d", &n, &q);
//	get_primes(n);
//	while (q--)
//	{
//		int k;
//		scanf("%d", &k);
//		printf("%d\n", prime[k - 1]);
//	}
//	return 0;
//}

typedef long long ll;
ll p, q;

ll gcd(ll a, ll b)
{
	return b ? gcd(b, a % b) : a;
}

int main()
{
	cin >> p >> q;
	ll ret = 0;
	if (p == q) ret--;
	ll w = p * q;
	for (ll i = 1; i <= w/i; i++)
	{
		if (w % i == 0 && gcd(i, w / i) == p) 
			ret += 2;
	}
	cout << ret << endl;
	return 0;
}